#ifndef HAVE_TEXT2XML_LEXICON_ITER_H
#define HAVE_TEXT2XML_LEXICON_ITER_H

#include "../types/Regex.h"
#include "Lexicon.h"

#ifdef __cplusplus
extern "C" {
#endif
  typedef GList LexiconIter;

  /**
   * Returns a new list iterator.
   */
  LexiconIter* lexicon_iter_new(Lexicon* lexicon);

  /**
   * Destroys the iterator.
   */
  void lexicon_iter_free(LexiconIter* iter);

  /**
   * Points the iterator to the previous item.
   */
  LexiconIter* lexicon_iter_prev(LexiconIter* iter);

  /**
   * Points the iterator to the next item.
   */
  LexiconIter* lexicon_iter_next(LexiconIter* iter);

  /**
   * Returns the name of the item pointed to by the iterator.
   */
  const char* lexicon_iter_get_name(LexiconIter* iter);

  /**
   * Returns the regex of the item pointed to by the iterator.
   */
  Regex* lexicon_iter_get_regex(LexiconIter* iter);
#ifdef __cplusplus
}
#endif                          /* __cplusplus */
#endif                          /* HAVE_TEXT2XML_LEXICON_ITER_H */
